/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package admin.indicadores;

import DBMS.DataBaseManager;
import clases.Indicador;
import clases.Totalizacion;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.upload.FormFile;

/**
 *
 * @author Gimbet
 */
public class AgregarIndicador extends DispatchAction {

    /*
     * forward name="success" path=""
     */
    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static final String POPULATE = "populate";

    public ActionForward populate(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        request.setAttribute("Indicador",new Indicador());
        return mapping.findForward(POPULATE);
    }
        
     public ActionForward save(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
         Indicador indicador = (Indicador) form;
         DataBaseManager dbms = DataBaseManager.getInstance();
         FormFile myFile = indicador.getArchivo();
         ArrayList<Totalizacion> totalizaciones = dbms.consultarTodasTotalizaciones();
         Indicador indi = new Indicador();
        
         if (!totalizaciones.isEmpty()){
             indicador.extraerInformacion(totalizaciones);
         }else{
             indi.setMensaje("Error, no hay totalizaciones cargadas");
             return mapping.findForward(FAILURE);
         }
         if (indicador.getElementos() == null){
             indi.setMensaje("Error: algunas de las Totalizaciones ingresadas en el archivo "
                     + "aun no han sido cargadas al sistema");
             request.setAttribute("Indicador",indi);
             return mapping.findForward(FAILURE);
         }
        indi = dbms.agregarIndicador(indicador);
        System.out.println("En el agregar, el indicador es: "+ indi.getIdIndicador());
         if (indi == null){
             System.out.println("Error en AgregarIndicador");
             indicador.setMensaje("Error agregando el indicador");
             request.setAttribute("Indicador",indicador);
             return mapping.findForward(FAILURE);
         }
          request.setAttribute("Indicador",indi);
         indi.setMensajeOK("Indicador agregado satisfactoriamente");
        return mapping.findForward(POPULATE);
    }
        
}
